#pragma once

/* 预处理器基本 */
/*	TO_STRING */
#define _TO_STRING(x)			#x
#define TO_STRING(x)			_TO_STRING(x)
#define __MCAT(x, y)			x##y

/* 判断宏是否设置, tricks from seL4 */
/* 设置的空宏 -> 1 | 未定义或有值 -> 0 */
#define IS_EMPTY(macro)			__IS_EMPTY(macro)
#define __MACROTEST_1			,
#define __IS_EMPTY(value)		__IS_EMPTY_(__MACROTEST_1##value)
#define __IS_EMPTY_(comma)		__IS_EMPTY__(comma 1, 0)
#define __IS_EMPTY__(_, v, ...)		v

